"""
一球从M米高度自由下落，每次落地后返回原高度的一半，再落下。
它在第N次落地时反弹多高？共经过多少米？ 保留两位小数 python
"""
def calculate_rebound_height_and_distance(M, N):
    # 计算第N次落地时的反弹高度
    rebound_height = M / (2 ** N)

    # 计算总共经过的距离--具体过程需要再看看
    total_distance = 0
    for i in range(1, N + 1):
        if i == 1:
            total_distance += M  # 第一次下落
        else:
            total_distance += 2 * M / (2 ** (i - 1))  # 之后每次上升和下降

    return round(rebound_height, 2), round(total_distance, 2)

# 示例：假设球从10米高度自由下落，计算第5次落地时的反弹高度和总距离
M = 10  # 初始高度
N = 5   # 落地次数
calculate_rebound_height_and_distance(M, N)

